home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_03 / allison / tstr.cpp < prev    next >
C/C++ Source or Header  |  1994-01-05  |  2KB  |  93 lines

  1.  
  2. LISTING 13 - Use macros and an inline function to test the
  3. standard C++ string class
  4. // tstr.cpp:     Test the C++ string class
  5.  
  6. #include <iostream.h>
  7. #include <stddef.h>
  8. #include <cstring.h>
  9.  
  10. // Handy display macros
  11. #define result(exp) \
  12.     cout << #exp ":  \"" << (exp) << '\"' << endl
  13. #define test(obj,exp) \
  14.     exp, print(#obj ", after " #exp ":\n",obj)
  15.  
  16. // Print a string in quotes
  17. inline void print(const char *p, const string& s)
  18. {
  19.     cout << p << '"' << s << '"' << endl;
  20. }
  21.  
  22. main()
  23. {
  24.     string s1("Now is the time for all worthy carbon units"),
  25.            s2 = "to come to the aid of their sector.",
  26.            s3 = '\n',
  27.            s4(s1);
  28.     size_t len = s1.length();
  29.  
  30.     // Test some operators
  31.     result(s1 == s4);
  32.     result(s1 < s4);
  33.     result(s1 + s3 + s2);
  34.     test(s1,s1 += s3 + s2);
  35.     result(s1 == s4);
  36.     test(s1,s1.resize(len));
  37.     result(s1 == s4);
  38.     cout << endl;
  39.  
  40.     // Search and replace
  41.     size_t pos = s1.find("all");
  42.     if (pos != NPOS)
  43.         test(s1,s1.replace(pos,3,"some"));
  44.     pos = s1.find("worthy");
  45.     if (pos != NPOS)
  46.     {
  47.         result(s1.substr(pos,5));
  48.         test(s1,s1.insert(pos,"un"));
  49.     }
  50.     cout << endl;
  51.  
  52.     // More searching
  53.     result(s1.find_first_of("aeiou"));
  54.     result(s1.find_first_not_of("aeiou"));
  55.     result(s1.find_last_of("aeiou"));
  56.     result(s1.find_last_not_of("aeiou"));
  57.     cout << endl;
  58.  
  59.     // Subscripting
  60.     pos = s2.find_first_of('d');
  61.     test(s2,s2[pos] = 'l');
  62.     return 0 ;
  63. }
  64.  
  65. /* Output:
  66. s1 == s4:  "1"
  67. s1 < s4:  "0"
  68. s1 + s3 + s2:  "Now is the time for all worthy carbon units
  69. to come to the aid of their sector."
  70. s1, after s1 += s3 + s2:
  71. "Now is the time for all worthy carbon units
  72. to come to the aid of their sector."
  73. s1 == s4:  "0"
  74. s1, after s1.resize(len):
  75. "Now is the time for all worthy carbon units"
  76. s1 == s4:  "1"
  77.  
  78. s1, after s1.replace(pos,3,"some"):
  79. "Now is the time for some worthy carbon units"
  80. s1.substr(pos,5):  "worth"
  81. s1, after s1.insert(pos,"un"):
  82. "Now is the time for some unworthy carbon units"
  83.  
  84. s1.find_first_of("aeiou"):  "1"
  85. s1.find_first_not_of("aeiou"):  "0"
  86. s1.find_last_of("aeiou"):  "43"
  87. s1.find_last_not_of("aeiou"):  "45"
  88.  
  89. s2, after s2[pos] = 'l':
  90. "to come to the ail of their sector."
  91. */
  92.  
  93.